package subject.tengxun.middle.easy;

/**
 * 请编写一个字符串压缩程序，将字符串中连续出席的重复字母进行压缩，并输出压缩后的字符串。
 * 压缩规则：
 * 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符，压缩后的字符串还是"abcbc"。
 * 2、压缩字段的格式为"字符重复的次数+字符"。例如：字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。
    腾讯云易一面
 */
public class problemTest {
    public static void main(String[] args) {
        // 1.每个字符 - 记录对应的次数
        // 0次的话就保持元字符
        // 否则的话就变换为 “次数+字符”
        String item = "abcbc";

        // 当x -> 3x时
        // 需要重置sum以及将当前的c1切换为下一个元素的开始
        // 字符串的长度
        int length = item.length();
        StringBuilder stringBuilder = new StringBuilder();
        char c1 = item.charAt(0);
        int sum = 1;
        for (int i = 1; i < length; i++) {
            char c = item.charAt(i);
            if(c1 == c){
                sum =  sum + 1;
                c1 = c;
            }
            else {
                if (sum == 1){
                    // 判断是最后一个元素
                    if(i==length-1){
                        // 添加元字符
                        stringBuilder = stringBuilder.append(c1);
                        stringBuilder = stringBuilder.append(c);
                    }else{
                        // 添加元字符
                        stringBuilder = stringBuilder.append(c1);
                    }


                }else {
                    if(i == length - 1){
                        // 添加数字
                        stringBuilder.append(sum);
                        stringBuilder.append(c1);
                        stringBuilder.append(c);
                    }else{
                        // 添加数字
                        stringBuilder.append(sum);
                        stringBuilder.append(c1);
                    }

                }
                // 一轮情况查看
                c1 = c;
                sum = 1;
//                break;
            }
//            if(i == length -1){
//                // 最后一个元素没有进来，添加
//                char c2 = item.charAt(i);
//                stringBuilder.append(c2);
//            }

        }
        String s = stringBuilder.toString();
        System.out.printf(s);
    }
}
